October 13, 2020
참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음
목적지에서는 이 비트를 확인하고 한 비트라도 다른 비트가 있다면 각 비트가 가진 더 많은 값을 선택해서 받는다.
ACK
패킷을 송신자에게 다시 보내고 송신자는 ACK
패킷을 받을 때까지 기다렸다가 다음 패킷을 보내는 방식이다.이 방법을 사용하면 Flow Control 이 자동으로 된다는 장점이 있다. 왜냐하면 ACK
패킷을 받을 떄까지는 송신자는 절대 다음 패킷을 보내지 않기 때문에 송신자의 전송률이 수진자의 처리율보다 더 빨라도 부하가 걸리는 일이 없기 때문이다.
따라서 Stop-and-wait에서는 Time out
개념을 도입해서 일정시간동안 송신자가 수신자로부터 ACK을 받지 못하면 Time out 이후에 같은 패킷을 다시 한 번 보내는(Retransmission
) 구조를 사용한다.
sequence number
를 붙여서 수진자 측에서 해당 번호를 확인한 뒤 중복된 패킷은 버리고 해당 패킷에 대한 ACK 만 응답하도록 한다.그런데 만약 각 패킷을 보내는데 걸리는 시간이 다르다면, 다음과 같은 시나리오가 발생한다.
stop-and-wait 의 성능평가는 다음처럼 이루어진다.
2tp
L+A / R
(L+A)/R + 2tp
이다.L/(L+A+2Rtp)
로 계산된다.Sliding window
는 파이프라이닝을 사용해서 아직 ACK이 송신측에 도착하지 않았다고 하더라고 일정한 양의 패킷을 연달아 보내는 정책이다.송신측 동작 원리
send_base
는 아직 ACK 응답을 받지 않은 패킷들 중에 가장 첫 패킷을 말한다. 따라서 송신측은 sendbase 부터 sendbase + N - 1 번 까지의 패킷 중 아직 보내지 않은 패킷을 보내게 된다.time out
서비스를 제공한다.수신측 동작 원리
window를 항상 1
로 설정한다. 따라서 수신측은 현재 받고자 하는 패킷의 sequence number 만을 기억한다.cumulative ACK
이라고 하고, 해당 ACK이 가진 sequence number 이전의 숫자를 가진 모든 패킷들은 정상적으로 도착했다는 것을 의미한다.버린다
. 그리고 지금 가지고 있는 연속된 sequence number 중 가장 큰 숫자를 ACK에 붙여 보낸다. 이렇게 하면 현 시점에서 성공적으로 받은 마지막 패킷의 숫자를 송신자에게 알려주게 된다
.윈도우의 크기는 sequence number 로 사용하는 비트 수에 영향을 받는다. 윈도우가 너무 크면 일정 비트의 sequence number로 표현할 수 없는 문제가 발생한다.
2^m - 1
보다 같거나 작아야한다.송신측 동작원리
send_base ~ send_base + N - 1
의 sequence number를 가진 패킷을 전달한다.수신측 동작원리
SR도 GBN 과 같이 윈도우 크기와 sequence number 의 비트수가 서로 연관되어 있다.
2^m - 1
보다 같거나 작아야한다.